
package com.egzosn.service.pay.interceptor;

import com.egzosn.pay.common.api.PayMessageHandler;
import com.egzosn.pay.common.api.PayMessageInterceptor;
import com.egzosn.pay.common.api.PayService;
import com.egzosn.pay.common.bean.PayMessage;
import com.egzosn.pay.common.exception.PayErrorException;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import java.util.Map;

/**
 * 回调信息拦截器
 * @author: egan
 * email egzosn@gmail.com
 * date 2017/1/18 19:28
 */
@Component
public class WxPayMessageInterceptor implements PayMessageInterceptor {

    /**
     * 拦截支付消息
     *
     * @param payMessage     支付回调消息
     * @param context        上下文，如果handler或interceptor之间有信息要传递，可以用这个
     * @param payService
     * @return true代表OK，false代表不OK并直接中断对应的支付处理器
     * @see PayMessageHandler 支付处理器
     */
    @Transactional
    @Override
    public boolean intercept(PayMessage payMessage, Map<String, Object> context, PayService payService) throws PayErrorException {
        //这里进行拦截器处理，自行实现，
        String outTradeNo = payMessage.getOutTradeNo();
        //可以在这里获取账单或者订单放置上下文对象中，然后在处理器里面进行取出
        //比如  已经回调过了  重复回调不进行处理     return false;

        return true;
    }
}
